package fr.dauphine.spring.bo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;
import org.springframework.stereotype.Component;

@Component
@Entity
@Table(name = "COMMANDE")
@SQLDelete(sql = "update COMMANDE set deleted = 'TRUE' where id = ? and version = ?")
@Where(clause = "deleted <> 'TRUE'")
public class Commande extends BO implements Serializable, Comparable<Commande> {

	private static final long serialVersionUID = 1L;

	@Transient
	private String[] prodSelected;
	@Transient
	private static List<Produit> listeProduits;

	@ManyToMany
	private List<Produit> produits;

	public Commande() throws Exception {
		produits = new ArrayList<Produit>();
	}

	@Override
	public int compareTo(Commande o) {
		return 0;
	}

	public String[] getProdSelected() {
		return prodSelected;
	}

	public void setProdSelected(String[] prodSelected) {
		this.prodSelected = prodSelected;
	}

	public List<Produit> getListeProduits() {
		return listeProduits;
	}

	public static void setListeProduits(List<Produit> listeProduits) {
		Commande.listeProduits = listeProduits;
	}

	public List<Produit> getProduits() {
		return produits;
	}

	public void setProduits(List<Produit> produits) {
		this.produits = produits;
	}

	//
	// @Override
	// public boolean equals(Object obj) {
	// if (obj instanceof Commande) {
	// final Commande commande = (Commande) obj;
	// return (commande.cdBarre == this.cdBarre &&
	// commande.nomPdt.equals(this.nomPdt));
	// } else {
	// return false;
	// }
	// }
	//
	@Override
	public int hashCode() {
		return (id != null) ? id.hashCode() : 0;
	}
	//
	// @Override
	// public String toString() {
	// return Integer.toString(cdBarre) + ", " + nomPdt + ", " +
	// Double.toString(prix);
	// }
}
